Exercices sur les classes ************************* La structure Durée ================== .. quiz:: propriete :title: La structure Durée Écrivez une structure *Duree* stockant une durée en seconde dans un champ *DureeSeconde*. La structure doit posséder un constructeur paramétrique recevant une durée en seconde ainsi que deux méthodes : *DureeEnMinute()* et *DureeEnHeure()* retournant la durée convertie en nombre de minutes (nombre entier) et en nombres d'heures (nombre entier). Votre structure doit pouvoir permettre d'exécuter le code suivant : .. code-block:: cpp Duree d(70); // durée de 70 secondes std::cout << d.DureeSeconde; std::cout << d.DureeEnMinute(); std::cout << d.DureeEnHeure(); La course de lapins =================== .. quiz:: coursedelapin :title: La course de lapins Écrivez le programme suivant : 1) Créez une structure *Lapin* qui contient les champs suivants : *numero* (int), *age* (int) et *position* (int). #) Écrivez un constructeur permettant d'initialiser le numéro et l'âge du lapin. La position sera toujours initialisée à 0. #) Ajoutez une méthode *Avancer()* à la structure *Lapin*. Cette méthode ajoute une valeur aléatoire comprise entre 0 et 5 à la position du lapin. La fonction `std::rand() `_ et la fonction modulo devraient vous aider. #) Dans la fonction *main()*, créez trois lapins avec des numéros et des âges différents. #) La course démarre ! Appelez la méthode *Avancer()* 100 fois sur chacun des trois lapins. #) Le lapin qui a gagné est celui avec la position la plus grande. Affichez le numéro et l'âge du lapin gagnant. Etat de la mémoire ================== .. quiz:: humanVMClass2 :title: Etat de la mémoire A partir du code suivant : .. code-block:: cpp struct C { int a,b; C() { a = 0; b = 0; } void Init_a(int _a) { a = _a; } void Init_b(int _b) { b = _b; } }; void Test() { C T[5]; for (int i = 0 ; i < 5 ; i++) T[i].Init_a(i); T[2] = T[4]; for (int i = 0 ; i < 5 ; i+=2) T[i].Init_b(T[i].a); } Dessinez l'état de la mémoire à la fin de la fonction *Test()*. Un papier et un crayon reste la façon la plus simple de dessiner ! La structure Rectangle ====================== .. quiz:: maPremiereClasse :title: La structure Rectangle Mettez en place le code suivant : 1) Créez une structure *Rectangle* #) Ajoutez des champs : largeur, hauteur (entier) et position x et y (entier). #) Ajoutez un constructeur paramétrique qui initialise la taille et la position de l'objet. #) Ajoutez une méthode d'instance *Aire()* qui retourne l’aire du rectangle. #) Dans la fonction *main()* : A) Créez une nouvelle instance de la structure *Rectangle* de dimension 20 par 30 à la position (15,20). #) Affichez les valeurs des champs de l'objet créé. #) Affichez l'aire de l'objet créé en appelant la méthode *Aire()*. #) Exécutez votre programme et vérifiez que tout fonctionne correctement. #) Ajoutez un constructeur sans argument qui initialise la forme comme un carré de coté 10 et de position (0,0). Pour cela, utilisez le chaînage de constructeur pour que le corps de votre constructeur ne contienne aucune instruction ! #) Ajoutez une méthode *DoublerTaille()* qui multiplie la largeur et la longueur du rectangle par 2. #) Dans la fonction *main()* : A) Créez une nouvelle instance *Rectangle* en utilisant le constructeur sans argument. #) Doublez la taille du rectangle créé avec la méthode *DoublerTaille*. #) Affichez les dimensions du rectangle pour vérifier que tout a bien fonctionné. #) Ajoutez une méthode *TestePlusPetit(?)* qui prend en paramètre un rectangle *r* et retourne vrai si l'aire de *r* est plus petite que l'aire de l'instance courante. Attention ! Vous devez vous posez la question du passage par copie, par référence ou par const référence (dernier paragraphe du chapitre *Copie et Référence*). #) Dans la fonction *main()* : A) Testez la méthode *TestePlusPetit()* avec les objets rectangle déjà créés.